The IEEE 802.11 wireless LAN communications standard (in compliance with ANSI/IEEE Std. 802.11, 1999 Edition) specifies that in the MAC Layer, data packets are output to the upper layer in the receiving station in the same order as their transmissions (Strict Order). According to the IEEE 802.11 standard, Sequence Numbers, given sequentially to all transmitted data packets, are contained in the headers of the data packets so that the data packets are uniquely identified. The Sequence Numbers are used for the following process: Having receives a data packet from the transmitting station, the receiving station returns an acknowledge (Ack) to the transmitting station so that the transmitting station checks the Ack for the data packet. After checking the Ack, the transmitting station starts the transmission of a next data packet.
Under these circumstances, if there is a data packet for which the transmitting station has failed to receive an Ack from the receiving station, the transmitting station transmits that data packet again to the receiving station. The packet is discarded by the receiving station if the receiving station has previously received a packet having the same Sequence Number.
If the receiving station cannot receive the data packet after the transmitting station's repeated attempts, the transmitting station gives up transmitting it and starts to transmit a next data packet. This results in discontinuous data packets, hence, discontinuous Sequence Numbers, being received by the receiving station. Still, the Strict Order is regarded as being followed, because none of the Sequence Numbers are transposed. Upon receiving the data packet, the receiving station outputs data in the data packet to the upper layer.
Lately, there is increasing demand for wireless transmission of video, audio, and other realtime data. To transmit realtime data, data packets must be transmitted within a certain delay time. It is therefore preferred if attention is paid to the transmission expiration time for each data packet in the MAC Layer. This is because if only the upper layer knows the transmission expiration time for each data packet, whereas the MAC Layer does not, the MAC Layer keeps repeating the transmission of a data packet even after the expiration time of that packet, reducing effective data transmission efficiency.
Taking these facts into consideration, the IEEE 802.11e standard, an extension to 802.11 (in compliance with IEEE Std 802.11e/D1, Mar.2001), defines that in the MAC Layer, each packet has a transmission expiration time termed a lifetime. The lifetime indicates how long the data will be stored in the transmitting station. The countdown of the lifetime starts when the transmitting station inputs data from the upper layer to the MAC Layer. The data packet out of lifetime is discarded by the transmitting station without prior notice to the receiving station. The transmitting station never retransmits the data after that, even if the receiving station has not successfully received it. All packets are at default set to have an equal lifetime in typical systems.
In realtime data transmissions error correction code is often used to restrain the number of retransmissions per unit time. A drawback to this approach is that error correction decoding takes so much time that an Ack cannot be returned immediately. A technique addressing the problem is suggested where acknowledges for a set of data packets are collectively transmitted in a single packet termed a DELAYED-ACK.
A DELAYED-ACK contains a bitmap in which one bit is assigned to each Sequence Number of successive data packets. The data receiving station sets the bit to 1 if the station has successfully received the data packet identified by the Sequence Number. The receiving station returns to the transmitting station a DELAYED-ACK prepared this way, inclusive of information on the first one of the Sequence Numbers of the data packets for which an acknowledge is to be returned and on the number of acknowledges contained.
The DELAYED-ACK entails following problems, for example, when used in a video, audio, or other realtime data transmission where the receiving station receives data packets as described in the foregoing in a different sequence from that in which the transmitting station transmitted the packets. When this happens, the receiving station sends a data packet retransmission request, and does not output received data packets to the upper layer, but buffers them so as to follow the Strict Order. The receiving station may therefore fail to obtain expiration time for the received data packets and determine up to when the received data packets should be output to the upper layer. In other words, attempts to follow the Strict Order possibly result in expiration of the received data packets. The data packets are wasted.
FIG. 13 illustrates an example of the data packet flow in such cases. The data packet is transferred from the transmitting station upper layer to the transmitting station MAC Layer, then the receiving station MAC Layer, and the receiving station upper layer. An example is shown by packets 701a, 701b, 701c, 701d in the figure demonstrating the transfer of a data packet 1 from one layer to another. For example, as to the data packet 1, the packet 701a is input from the upper layer to the MAC Layer; then, in the MAC Layer, the packet 701b is transmitted at a timing determined by the protocols. The receiving station determines whether the packet 701c has been successfully received before outputting it to the upper layer as the packet 701d. 
Each data packet has an expiration time, set to a certain value, for the time taken from the input from the transmitting station upper layer to the output to the receiving station upper layer. For example, the data packet 1 must reach the receiving station upper layer by an expiration time 701e shown in FIG. 13. After the expiration time, the data packet is discarded by the transmitting station without notifying the receiving station. Thereafter, no retransmission will be made in response to a retransmission request from the receiving station.
The expiration times 701e, 702e, 704e, 706e, 707e for the data packets 1, 2, 4, 6, 7 in FIG. 13 are estimates calculated by the receiving station according to an equation: Expiration Time=Time of First-time Packet Receipt+Lifetime. The expiration time 704e is for a retransmitted data packet and does not match the expiration time at the transmitting end.
Still referring to FIG. 13, the packet 703c for the data packet 3 is shown to have not been received by the receiving station for some reason or have not been successfully received due to an error in the data in the data packet.
The MAC Layer of the receiving station records whether data packets have been successfully received and transmits DlyAcks 710, 711 corresponding to a DELAYED-ACK when the received data packets has reached a certain number. The DlyAck 710 notifies that the packet 701c corresponding to the data packet 1 and the packet 702c corresponding to the data packet 2 have been successfully received. Upon receipt of the DlyAck 710, the MAC Layer of the transmitting station determines that the receiving station has not received the packet 703b corresponding to the data packet 3 and the packet 704b corresponding to the data packet 4. The packets are retransmitted as packets 703b1, 704b1.
Similarly, the DlyAck 711 notifies the transmitting station that the receiving station has successfully received packets except the packet 703b corresponding to the data packet 3 and the packet 705b corresponding to the data packet 5. Upon receipt of the DlyAck 711, the transmitting station retransmits the packet 705b1 corresponding to the data packet 5 based on the DlyAck 711, but not the packet 703b corresponding to the data packet 3, because the transmitting station knows that the expiration time for the data packet 3 has already past.
The receiving station outputs received data packets, e.g., the packets 701d, 702d, to the upper layer provided that the Strict Order is followed. On the other hand, if the Strict Order is not followed, in other words, if there is a data packet yet to be successfully received bearing a smaller number than a newly received data packet, the received data packet is buffered. In this example, the data packet 3 has not reached the MAC Layer of the receiving station. The packet 704c corresponding to the data packet 4, the packet 705c corresponding to the data packet 5, the packet 706c corresponding to the data packet 6, and the packet 707c corresponding to the data packet 7, although successfully received by the receiving station, are buffered in the MAC Layer of the receiving station until the packet 703c corresponding to the data packet 3 is received.
If the packet 703b corresponding to the data packet 3 is not successfully transferred to the receiving station before the expiration time for the data packet 3, the packet 703b corresponding to the data packet 3 is discarded by the transmitting station as mentioned earlier; the receiving station needs to determine one way or the other when to give up receiving the packet 703d corresponding to the data packet 3.
In this example, the transmitting station must have transmitted the packet 703b corresponding to the data packet 3 before the packet 704b corresponding to the data packet 4. Accordingly, the expiration time for the data packet 3 is reasonably estimated to come before the time of receiving the packet 704c1 corresponding to the data packet 4, plus the lifetime. However, the expiration time for a data packet is a time starting when the data packet is input from the upper layer to the MAC Layer in the transmitting station. The receiving station alone can at best estimate an expiration time for each data packet, let alone know the exact expiration time. There is a problem especially worth mentioning here: In the example, the packet 704c1 corresponding to the data packet 4 is successfully received by the receiving station in the second transmission, not in the first transmission, of the packet 704b corresponding to the data packet 4 from the transmitting station. The transmitting station is set to automatically retransmit a data packet if it does not receive an Ack in a certain period of time. Therefore, if the expiration time 3 for the packet 703d corresponding to the data packet 3 is determined based on the estimate, the receipt of the packet 703d corresponding to the data packet 3 is awaited in some cases even after the expiration time is past for the packets following the packet 704d corresponding to the data packet 4; when the successful received data packets following the packet 704d corresponding to the data packet 4 are output to the upper layer, they are no longer valid.
Video and other realtime data is transmitted using, for example, MPEG2-TS specifying that time information is added to the data packet by an encoder upon the generation of the packet. To reproduce MPEG2-TS data packets, a decoder is used to recover the time information based on which the reproduction is carried out.
The time information according to MPEG2-TS is added for use in the encoder and the decoder. The time information is based on a different clock from the one for the time information used in the communication path (MAC Layer). It is therefore difficult to apply the time information added in MPEG2-TS to determine the expiration time for data packets in the communication path. In some cases, TS packets are merged or divided in transmission to facilitate communications. Conventional art does not consider adding expiration time information to those merged/divided packets.
Conceived to address the problems, the present invention has an objective to offer a packet communications method, communications. system, communications device, communications program, and storage medium containing the communications program, which allows for more accurate knowledge of packet expiration times for efficiency-improved transmission following the Strict Order.